﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace MtwControl
{
    /// <summary>
    /// 核心，WINDOWS的API用于执行，鼠标，键盘动作的。
    /// </summary>
    public class ExternFun
    {
        /// <summary>
        ///  发送鼠标消息
        /// </summary>
        /// <param name="dwFlags">参考MouseKword类中的参数，可以为该结构中的任何值的组合值</param>
        /// <param name="dx">鼠标沿X轴的绝对或相对偏移量，依赖与MouseKword.MOUSEEVENTF_ABSOLUTE</param>
        /// <param name="dy">鼠标沿Y轴的绝对或相对偏移量，依赖与MouseKword.MOUSEEVENTF_ABSOLUTE</param>
        /// <param name="dwData">如果dwFlags为MOUSEEVENTF_WHEEL，则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动，
        /// 即远离用户的方向；负值表明鼠标轮向后转动，即朝向用户。一个轮击定义为WHEEL_DELTA，即120。
        /// 如果dwFlagsS不是MOUSEEVENTF_WHEEL，则dWData应为零。  </param>
        /// <param name="dwExtraInfo">指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息。（任意） </param>
        [DllImport("user32.dll")]
        public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
        /// <summary>
        /// 发送全局键盘消息
        /// </summary>
        /// <param name="bVk">键值（调用Mykey结构体，已经全部定义）</param>
        /// <param name="bScan">键盘键对应虚拟码（与键值相同即可）</param>
        /// <param name="dwFlags">表示按下或弹起，0按下，2弹起</param>
        /// <param name="dwExtraInfo">直接输入0即可</param>
        [DllImport("user32.dll")]
        public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
    }
}